iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
2
DevOps

DevOps with Proxmox系列 第 10

Day 10 - Terraform & Proxmox VE - VM

  • 分享至 

  • xImage
  •  

昨天我們看了如何利用 Terraform 管理容器
今天我們要來看如何利用 Terraform 管理 VM

Terraform 在管理 VM 時,可以利用兩種方式來建立 VM
一種是,讓 VM 在開機時載入 ISO,然後可能用什麼方法讓機器可以自動安裝
而另一種方式是利用 clone VM,而在 clone VM 時還可以使用 cloud-init 來自動建立環境

以下,我們就利用 clone VM + cloud-init 的方式來部署 VM
這樣比較快(

首先,我們要先有一個能使用 cloud-init 的 VM template
如果你不知道該怎麽做的話,麻煩回顧一下以前的文章

我們直接看底下的 Terraform 設定範例

resource "proxmox_vm_qemu" "vm_test" {
  name        = "vm-test"
  desc        = "terraform-managed VM"
  target_node = "ithelp"

  clone = "ubuntu-20-04-cloud-init-template"

  os_type  = "cloud-init"
  cores    = 1
  sockets  = 1
  memory   = 1024
  boot     = "c"
  bootdisk = "scsi0"
  disk {
    id           = 0
    type         = "scsi"
    storage      = "local-lvm"
    storage_type = "lvm"
    size         = "8G"
  }
  ciuser     = "ithelp"
  cipassword = "insecurepassword"
  ipconfig0  = "ip=dhcp"
}

首先,我們在 clone 的地方定義了要拿哪個 VM template 來 clone
這裡的 value 要是 VM template 的名稱, Terraform 會自己去搜尋這個 template
再來, os_type 的 value 要是 cloud-init,因為我們利用 cloud-init 來快速設定 VM 環境

boot 的部分,在 Proxmox VE 的選項中, c 代表硬碟, d 代表光碟機, n 代表網路開機,而我們要用硬碟開機,所以我們在 boot 這欄要設定 c
而如果我們想設定依序用光碟機、硬碟、網路開機的話, boot 的值可以填寫 dcn

bootdisk 是指開機硬碟,由於我們的 VM template 製作時,硬碟接口是使用 SCSI,所以我們在這裡要設定 scsi0

接下來 disk 段是用來設定硬碟資訊,我們在這裡可以設定硬碟要儲存到哪,只要照著裡面的數值填寫就好了

再接下來是設定 cloud-init 的部分,我們可以在這裡設定 VM 裡的一些資訊,例如登入設定、 SSH key、網路設定...等等
由於這裡只是最簡單的範例,所以我們填寫了 ciusercipasswordipconfig0 三個選項

填寫完成後,我們一樣執行 terraform plan

terraform_plan_message

確認沒問題後一樣 terraform apply

proxmox_ve_vm_9000_clone

我們可以在 Proxmox VE 裡看到 VM clone 的訊息
過不久以後就會看到 VM 建立完成,也開機了
登入看看,應該能順利登入

Terraform 和 Proxmox VE 的混合操作先介紹到這裡
我們明天來介紹 Ansible


上一篇
Day 09 - Terraform & Proxmox VE - 容器
下一篇
Day 11 - Ansible 簡介
系列文
DevOps with Proxmox30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言